package com.itheima.controller;


import cn.itheima.health.entity.Result;
import cn.itheima.health.resources.MessageConstant;
import cn.itheima.health.service.SetmealService;
import com.itheima.pojo.Setmeal;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/setmeal")
public class SetmealController {

@Reference
private SetmealService setmealService;

    /**
     * <p>套餐列表查询,缓存功能完善</p>
     * 旧思路:<br/>
     *     每次请求过来,都从数据库里面查询,但是套餐信息作为网站的基础服务设置,根本不会经常改变,<br/>
     *     对于这种不会经常改变的数据应当将其放到缓存中,减轻服务器的查询压力<br/>
     *
     * 新思路:<br/>
     *      请求过来先从缓存中取出存储的套餐列表数据<br/>
     *      <ul>
     *          <li>缓存内取出数据不为空: 直接将数据封装到Result同一响应结果集内,返回给前端</li>
     *          <li>缓存内取出数据为空: 1.先从数据库内查出列表数据;2.将列表数据放入redis中(以String类型存储,name为SETMEAL_LIST,值为json类型)</li>
     *      </ul>
     *
     *
     *
     * @return cn.itheima.health.entity.Result 同一响应结果集
     * @author wuguang
     * @date 2020/8/5 20:31
     *
     */
    @RequestMapping("/findAll.do")
    public Result findAll(){
        try {
            String setMealListStr= setmealService.findAll();
            return  new Result(true, MessageConstant.QUERY_SETMEAL_SUCCESS, setMealListStr);
        } catch (Exception e) {
            e.printStackTrace();
            return  new Result(false, MessageConstant.QUERY_SETMEAL_FAIL);
        }
    }

    @RequestMapping("/findSetMealDetail.do")
    public Result findSetMealDetail(@RequestParam("id") Integer id){
        try {
           String setmeal=  setmealService.findSetMealDetail(id);
            return  new Result(true, MessageConstant.QUERY_SETMEAL_SUCCESS,setmeal);
        } catch (Exception e) {
            e.printStackTrace();
            return  new Result(false, MessageConstant.QUERY_SETMEAL_FAIL);
        }

    }

    /**
     * 根据套餐ID查询对应套餐,只包含基本属性,不包含检查组集合
     *
     * @param id 用户提交的id
     * @return cn.itheima.health.entity.Result
     * @author wuguang
     * @date 2020/8/5 22:26
     *
     */

    @RequestMapping("/findSetMealById.do")
    public Result findSetMealById(@RequestParam("id") Integer id ){
        try{
            String setMeal = setmealService.findSetMealById(id);
            return new Result(true, MessageConstant.QUERY_SETMEAL_SUCCESS,setMeal);
        }catch(Exception e){
            e.printStackTrace();
            return new Result(false, MessageConstant.QUERY_SETMEAL_FAIL);
        }
    }
}
